import type { APIRoute } from "astro";
import { getDatabase, schema } from "@/db";
import { getUserFromRequest } from "@/lib/auth";
import { success, badRequest, notFound, unauthorized, serverError } from "@/lib/api";
import { eq, desc } from "drizzle-orm";
import { projects, projectColumns } from "@/db/schema/projects";
import { logger } from "@/lib/logger";
import { withErrorHandler } from "@/lib/errors";
export const POST: APIRoute = withErrorHandler(async ({ request, params }) => {
const { id } = params; // project id
if (!id) return badRequest("Project ID required");
const user = await getUserFromRequest(request);
if (!user) return unauthorized();
const body = await request.json();
const { name } = body;
if (!name) return badRequest("Column name is required");
const db = getDatabase();
// Get max order
const existing = await (db as any).select({ order: projectColumns.order })
.from(projectColumns)
.where(eq(projectColumns.projectId, id))
.orderBy(desc(projectColumns.order))
.limit(1);
const nextOrder = (existing[0]?.order || 0) + 1;
const [newColumn] = await (db as any).insert(projectColumns).values({
id: crypto.randomUUID(),
projectId: id,
name,
order: nextOrder,
}).returning();
return success(newColumn);
});